home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
print
/
isigns50.zip
/
PRT.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1989-10-01
|
19KB
|
439 lines
PROCEDURE avail_space;
VAR pitch : REAL;
BEGIN
IF given_width = 0 THEN
CASE output_device OF
printr : BEGIN
IF block_type <> bit THEN BEGIN
CASE prt_cpi OF
pica : pitch := 10;
elite : pitch := 12;
squeezed : pitch := 17; {16.66 for IDS, HP}
tiny : pitch := 20 {n/a on IDS printer}
END; {case}
IF device_size = wide THEN
avail_width := TRUNC(pitch * 14)
ELSE
avail_width := TRUNC(pitch * 8)
{end}
END ELSE BEGIN
CASE prt_type OF
ids : IF device_size = wide THEN
avail_width := 1134
ELSE avail_width := 672;
hp : CASE graphic_dens OF
single : avail_width := 600;
double : avail_width := 800;
triple : avail_width := 1200;
quad : avail_width := 2400
END; {case graphic_dens}
epson : CASE graphic_dens OF
single : IF device_size = wide THEN
avail_width := 816
ELSE avail_width := 480;
double,triple : IF device_size = wide THEN
avail_width := 1632
ELSE avail_width := 960;
quad : IF device_size = wide THEN
avail_width := 3264
ELSE avail_width := 1920
END {case graphic_dens}
END {case prt_type}
END {if not bit}
END;
screen : IF device_size = wide THEN
avail_width := 131
ELSE
avail_width := 79;
recd_file : avail_width := Max_Length
END {case}
ELSE {width WAS given}
avail_width := given_width;
{end if width was not given}
GOTORC(16,6); lowvideo; WRITE('Width available -> ');
highvideo; WRITE(avail_width ,' ');
GOTORC(17,25); CLREOL; highvideo; WRITE('---') {don't know required}
END;
PROCEDURE set_up_prt; { (reset_prt : BOOLEAN) }
BEGIN
IF reset_prt THEN
CASE prt_type OF
{dumb : ; {no action}
ids : putchr(CHR(30)+CHR(27)+'B8$'+CHR(27)+'Q4$'); {12 cpi, 6 lpi, Black}
hp : putchr(CHR(27)+'E');
epson : putchr(CHR(18)+CHR(27)+'P'+CHR(27)+'2')
END {case}
ELSE
CASE prt_type OF
{dumb : ; {no action}
ids : BEGIN
putchr(CHR(27)+'R2$'); {Draft quality print}
CASE prt_lpi OF
six : putchr(CHR(27)+'B8$');
eight : putchr(CHR(27)+'B6$');
ten : putchr(CHR(27)+'B5$');
twelve : putchr(CHR(27)+'B4$')
END; {case}
CASE prt_cpi OF
pica : putchr(CHR(29));
squeezed : putchr(CHR(31));
elite : putchr(CHR(30));
tiny : putchr(CHR(30)) {20 cpi n/a on Prism, use 16.7}
END; {case}
CASE prt_color OF
black : putchr(CHR(27)+'Q4$');
blue : putchr(CHR(27)+'Q3$');
green : putchr(CHR(27)+'Q2$');
red : putchr(CHR(27)+'Q1$')
END; {case}
putchr(CHR(13)); {and a final <cr> to return head}
{IF block_type = BIT THEN BEGIN
graphics set-up - none required
END;}
END;
hp : BEGIN
CASE prt_lpi OF
six : putchr(CHR(27)+'&l8C');
eight : putchr(CHR(27)+'&l6C');
ten : putchr(CHR(27)+'&l5C');
twelve : putchr(CHR(27)+'&l4C')
END; {case}
CASE prt_cpi OF
pica : putchr(CHR(27)+'(s10H');
elite : putchr(CHR(27)+'(s12H');
squeezed : putchr(CHR(27)+'(s17H');
tiny : putchr(CHR(27)+'(s20H')
END; {case}
putchr(CHR(13)); {and a final <cr> to return head}
IF block_type = BIT THEN {graphics set-up}
CASE graphic_dens OF
single : putchr(CHR(27)+'*t75R'+CHR(27)+'*r0A');
double : putchr(CHR(27)+'*t100R'+CHR(27)+'*r0A');
triple : putchr(CHR(27)+'*t150R'+CHR(27)+'*r0A');
quad : putchr(CHR(27)+'*t300R'+CHR(27)+'*r0A');
END {case graphic_dens}
{END if graphics}
END;
epson : BEGIN
putchr(CHR(27)+'x0'); {Draft quality print}
CASE prt_lpi OF
six : putchr(CHR(27)+'2');
eight : putchr(CHR(27)+'0');
ten : putchr(CHR(27)+'1');
twelve : putchr(CHR(27)+'3'+chr(18))
END; {case}
CASE prt_cpi OF
pica : putchr(CHR(27)+'P'+chr(18));
squeezed : putchr(CHR(27)+'P'+chr(15));
elite : putchr(CHR(27)+'M'+chr(18));
tiny : putchr(CHR(27)+'M'+chr(15))
END; {case}
putchr(CHR(13)); {and a final <cr> to return head}
IF block_type = BIT THEN
putchr(CHR(27)+'A'+CHR(8)); {graphics 8/72 <lf>}
{END}
END
END {case}
{END if reset_prt}
END; {procedure set_up prt}
PROCEDURE out_char; {(ochar,ichar,action : CHAR);}
VAR i : INTEGER;
BEGIN
CASE action OF
'S' : BEGIN {Start - initialize graphic lines and clear}
FOR i := 1 TO Max_Length DO BEGIN
gout_1.chr[i] := CHR(0);
gout_2.chr[i] := CHR(0);
out_line.chr[i] := CHR(0)
END;
gout_1.len := 0;
gout_2.len := 0;
out_line.len := 0
END;
'C' : BEGIN
FOR i := 1 TO out_line.len DO out_line.chr[i] := CHR(0);
out_line.len := 0 {Clear - clear current line}
END;
'A' : BEGIN {Add - add passed char and inverse char to line}
out_line.len := out_line.len + 1;
IF (out_line.chr[out_line.len] IN [CHR(0),' ']) OR
((out_line.chr[out_line.len] <> ' ') AND (ochar <> ' '))
THEN BEGIN
out_line.chr[out_line.len] := ochar;
out_line.ichr[out_line.len] := ichar
END {don't overwrite non spaces}
END;
'D','E' : BEGIN {End - line completed, output}
IF avail_width < out_line